[vala] Scanner has now a public static method to check if a token is a keyword or an identifier. CodeWriter



commit 789e5e0be93686520c0728bd7d332fddbf24ab00
Author: Alberto Ruiz <aruiz codethink co uk>
Date:   Thu Jul 23 17:35:27 2009 +0100

    Scanner has now a public static method to check if a token is a keyword or an identifier. CodeWriter uses that method to figure out whether it should add a @ prefix or not.

 vala/valacodewriter.vala |   12 +++++-------
 vala/valascanner.vala    |    4 ++--
 2 files changed, 7 insertions(+), 9 deletions(-)
---
diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala
index 073c107..b83b44b 100644
--- a/vala/valacodewriter.vala
+++ b/vala/valacodewriter.vala
@@ -1544,13 +1544,11 @@ public class Vala.CodeWriter : CodeVisitor {
 	}
 	
 	private void write_identifier (string s) {
-		if (s == "base" || s == "break" || s == "class" ||
-		    s == "construct" || s == "delegate" || s == "delete" ||
-		    s == "do" || s == "dynamic" || s == "foreach" || s == "in" ||
-		    s == "interface" || s == "lock" || s == "namespace" ||
-		    s == "new" || s == "out" || s == "ref" ||
-		    s == "signal" || s.get_char ().isdigit ()) {
-			stream.putc ('@');
+		char* id = (char*)s;
+		int id_length = (int)s.length;
+		if ( Vala.Scanner.get_identifier_or_keyword (id, id_length) != Vala.TokenType.IDENTIFIER ||
+                     s.get_char ().isdigit ()) {
+			stream.putc ('@'); 
 		}
 		write_string (s);
 	}
diff --git a/vala/valascanner.vala b/vala/valascanner.vala
index 6f09a13..a08bdaa 100644
--- a/vala/valascanner.vala
+++ b/vala/valascanner.vala
@@ -61,7 +61,7 @@ public class Vala.Scanner {
 		return (c.isalnum () || c == '_');
 	}
 
-	TokenType get_identifier_or_keyword (char* begin, int len) {
+	public static TokenType get_identifier_or_keyword (char* begin, int len) {
 		switch (len) {
 		case 2:
 			switch (begin[0]) {
@@ -792,7 +792,7 @@ public class Vala.Scanner {
 		return type;
 	}
 
-	bool matches (char* begin, string keyword) {
+	static bool matches (char* begin, string keyword) {
 		char* keyword_array = keyword;
 		long len = keyword.len ();
 		for (int i = 0; i < len; i++) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]