ошибка типа в пространстве имен и вне его
Участников: 3
Страница 1 из 1
ошибка типа в пространстве имен и вне его
Почему-то в коде ниже компилятор выдает ошибки
..\..\FbTemp.bas(7) error 110: Expected period ('.') in 'Type Type_'
..\..\FbTemp.bas( error 18: Syntax error, found 'Dim' in 'Dim _id As UInteger'
- Код:
Enum Type_
_INTEGER
' ...
End Enum
Namespace Token
Type Type_
Dim _id As UInteger
Union
Dim _type As Any Ptr
Dim _width As UInteger
End Union
End Type
End Namespace
Re: ошибка типа в пространстве имен и вне его
Я не уверен, но всякие там имена, начинающиеся с подчеркиваний, это традиционно директивы компилятору или всякие там служебные слова. Может, из-за их использования в качестве обычных переменных у компилятора крыша поехала?
MOHCTP- Сообщения : 17
Дата регистрации : 2011-02-07
Re: ошибка типа в пространстве имен и вне его
директивы начинаются с двух подчеркиваний, а не с одного. но он реально немного свихнут, т.к. призамене перечисления на тип все становится нормально. другое дело что при объявлении типа в подпространстве компилер считает, что там начинается елемент перечисления. Об этом свидетельствует "error 110", а 18-ая - это уже как следственная ошибка. Кстати если поменять их местами то есть enum и пространство имен, то все проходит нормально.
Помойму, это ошибка компилера, возможно, что в частности лексера. Т.к. в ошибке сказано, что ожидается период, значит, начинается разбор проги как для значения перечисления Type_ из-за того, что лексер скорее всего пострел в таблице имен и получил результат что Type_ это тип, хотя надо было для идентификатора. Парсер посмотрел что это типо перечисление, начал считывать для значение перисления и ждать точку, но её не последовало, поэтому выдал такое сообщение..
В общем-то я переделал свой код и избавился от этого, так что темку можно закрывать...
Помойму, это ошибка компилера, возможно, что в частности лексера. Т.к. в ошибке сказано, что ожидается период, значит, начинается разбор проги как для значения перечисления Type_ из-за того, что лексер скорее всего пострел в таблице имен и получил результат что Type_ это тип, хотя надо было для идентификатора. Парсер посмотрел что это типо перечисление, начал считывать для значение перисления и ждать точку, но её не последовало, поэтому выдал такое сообщение..
В общем-то я переделал свой код и избавился от этого, так что темку можно закрывать...
Re: ошибка типа в пространстве имен и вне его
Саня пишет:
Enum Type_
_INTEGER
' ...
End Enum
Namespace Token
Type Type_
Выделенное жирным - это что такое? Может "Dim As Type_ Type"? Это не Си... А может и описание перечисления в пространство поместить? Мало ли...
VerhoLom- Сообщения : 67
Дата регистрации : 2010-07-06
Возраст : 42
Re: ошибка типа в пространстве имен и вне его
это объявление типа.. в подпространстве имен Token, это точно и это позволяется... посмотрите в мане на NameSpace, а особенно в примере, вот в пример из мана:
и перечисления тоже можно перемещать в пространства имен.. и да, это не Си.. покрайней мере я не помню такого же в нем..
- Код:
Namespace Forms
Type Point '' A 2D point
As Integer x
As Integer y
End Type
'' Since we are inside of the namespace, Point resolves to Forms.Point.
Sub AdjustPoint( ByRef pt As Point, ByVal newx As Integer, ByVal newy As Integer )
pt.x = newx
pt.y = newy
End Sub
End Namespace
Type Point '' A 3D point
As Integer x
As Integer y
As Integer z
End Type
Sub AdjustPoint( ByRef pt As Point, ByVal newx As Integer, ByVal newy As Integer, ByVal newz As Integer )
pt.x = newx
pt.y = newy
pt.z = newz
End Sub
Dim pt1 As Point
AdjustPoint( pt1, 1, 1, 1 )
Dim pt2 As Forms.Point
Forms.AdjustPoint( pt2, 1, 1 )
sleep
и перечисления тоже можно перемещать в пространства имен.. и да, это не Си.. покрайней мере я не помню такого же в нем..
Re: ошибка типа в пространстве имен и вне его
Саня пишет:
..\..\FbTemp.bas(7) error 110: Expected period ('.') in 'Type Type_'
..\..\FbTemp.bas( error 18: Syntax error, found 'Dim' in 'Dim _id As UInteger'
А выделенная сттрока ни на что не наталкивает? Пишет, что Dim лишний... Сабака!
VerhoLom- Сообщения : 67
Дата регистрации : 2010-07-06
Возраст : 42
Re: ошибка типа в пространстве имен и вне его
Блин, чел...это вторая в списке ошибка, поэтому она может показываться, как результат неправильного распознавания после первой ошибки. То есть, если первой ошибки не будет, то и последующей( второй ) тоже не будет, точнее компилер будет уже правильно распознавать дальнейший текст проги..эт раз.
Если блок Enum убрать или переставить после Token, то все компилится поэтому вторая ошибка, ошибкой не будет( по крайней мере синтаксической или будет, но будет отдельной от первой ошибки ), эт два. Поэтому надо смотреть не на вторую ошибку, выдаваемую компилом, а на первую.. а там сказано..
Если блок Enum убрать или переставить после Token, то все компилится поэтому вторая ошибка, ошибкой не будет( по крайней мере синтаксической или будет, но будет отдельной от первой ошибки ), эт два. Поэтому надо смотреть не на вторую ошибку, выдаваемую компилом, а на первую.. а там сказано..
В сообщении сказано, что оидается точка и ещё какой-нибудь идентификатор.. Type_ - это enum, значит за точкой должен быть одна из констант, обьявленых в блоке Enum. Ни точки ни константы нет, зато есть Dim. Он не подходит и в данной ситуации не ожидается, поэтому выдается такая ошибка..
..\..\FbTemp.bas(7) error 110: Expected period ('.') in 'Type Type_'
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|